﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages.Cliente
{
    public partial class AddContato_Cliente : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblContatoCliente.Text = Convert.ToString(Session["nomeCliente"]);
                PopularGridContatosCliente(Convert.ToInt32(Session["IdCliente"]));

                if (Request["Tipo"].Equals("edit"))
                {
                    BuscaContato(sender, e, Convert.ToInt32(Session["IdCliente"]));
                }
            }
            
        }

        #region Popula Grid Contato

        protected void PopularGridContatosCliente(int IdCliente)
        {
            try
            {
                ContatoClienteDAL c = new ContatoClienteDAL();

                GridContatosCliente.DataSource = c.ListarTodos(IdCliente);
                GridContatosCliente.DataBind();

            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void PaginarDados(object sender, GridViewPageEventArgs e)
        {
            GridContatosCliente.PageIndex = e.NewPageIndex;
            PopularGridContatosCliente(Convert.ToInt32(Session["IdCliente"]));
        }

        #endregion

        #region CRUD Contato

        protected void SalvarContato(object sender, EventArgs e)
        {

            if (txtCodigo.Text != "")
            {
                LimpaCampos(this.Controls);
                lblMsgAddContato.Text = "";
                btnNovoContato.Text = "Salvar";
                txtNome.Focus();
                return;
            }

            try
            {
                Cli_Contato c = new Cli_Contato();

                c.Contato_nome = txtNome.Text;
                c.Contato_position = txtCargo.Text;
                c.Contato_telefone = txtTelefone.Text;
                c.Contato_fax = txtFax.Text;
                c.Contato_email = txtEmail.Text;
                c.Contato_dataNiver = Convert.ToDateTime(txtDataNiver.Text);
                c.Contato_mailing = Convert.ToBoolean(ddlMailing.SelectedValue);
                c.Cliente_id = Convert.ToInt32(Session["IdCliente"]);

                ContatoClienteDAL d = new ContatoClienteDAL();
                d.Salvar(c);
                lblMsgAddContato.Text = "Cadastro efetuado com sucesso.";
                PopularGridContatosCliente(Convert.ToInt32(Session["IdCliente"]));

            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void AtualizarContato(object sender, EventArgs e)
        {
            if (txtCodigo.Text == "")
            {
                lblMsgAddContato.Text = "Selecione um registro para ser atualizado.";
                return;
            }

            try
            {
                Cli_Contato c = new Cli_Contato();

                c.Contato_id = Convert.ToInt32(txtCodigo.Text);
                c.Contato_nome = txtNome.Text;
                c.Contato_position = txtCargo.Text;
                c.Contato_telefone = txtTelefone.Text;
                c.Contato_fax = txtFax.Text;
                c.Contato_email = txtEmail.Text;
                c.Contato_dataNiver = Convert.ToDateTime(txtDataNiver.Text);
                c.Contato_mailing = Convert.ToBoolean(ddlMailing.SelectedValue);
                c.Cliente_id = Convert.ToInt32(Session["IdCliente"]);

                ContatoClienteDAL d = new ContatoClienteDAL();
                d.Atualizar(c);
                lblMsgAddContato.Text = "Registro atualizado com sucesso.";
                PopularGridContatosCliente(Convert.ToInt32(Session["IdCliente"]));
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void ExcluirContato(object sender, EventArgs e)
        {
            if (txtCodigo.Text == "")
            {
                lblMsgAddContato.Text = "Selecione um registro para ser excluído.";
                return;
            }

            try
            {
                ContatoClienteDAL c = new ContatoClienteDAL();

                Cli_Contato cc = c.ObterPorId(Convert.ToInt32(txtCodigo.Text));
                c.Excluir(cc);
                lblMsgAddContato.Text = "Registro excluído com sucesso.";
                PopularGridContatosCliente(Convert.ToInt32(Session["IdCliente"]));

            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        #endregion

        #region Regras

        protected void GridContatosCliente_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                BuscaContato(sender, e, Convert.ToInt32(GridContatosCliente.SelectedRow.Cells[0].Text));
                lblMsgAddContato.Text = "";
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void BuscaContato(object sender, EventArgs e, int IdCliente)
        {
            try
            {
                ContatoClienteDAL c = new ContatoClienteDAL();

                Cli_Contato cc = c.ObterPorId(Convert.ToInt32(IdCliente));

                btnNovoContato.Text = "Novo";
                
                txtNome.Text = cc.Contato_nome;
                txtCargo.Text = cc.Contato_position;
                txtTelefone.Text = cc.Contato_telefone;
                txtFax.Text = cc.Contato_fax;
                txtEmail.Text = cc.Contato_email;
                txtDataNiver.Text = string.Format("{0:dd/MM/yyyy}", cc.Contato_dataNiver);
                ddlMailing.SelectedValue = cc.Contato_mailing.ToString();
                txtCodigo.Text = cc.Contato_id.ToString();
            }
            catch (Exception ex)
            {
                lblMsgAddContato.Text = ex.Message;
            }
        }

        protected void LimpaCampos(ControlCollection controls)
        {
            foreach (Control ctrl in controls)
            {
                if (ctrl is TextBox)
                {
                    (ctrl as TextBox).Text = string.Empty;
                }
                // ... demais controles que queira limpar

                LimpaCampos(ctrl.Controls);
            }
            lblMsgAddContato.Text = "";
        }

        protected void Limpar(object sender, EventArgs e)
        {
            LimpaCampos(this.Controls);
        }

        #endregion



    }
}